home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 26 / AMIGAplus Sonderheft 26 (2000)(Falke)(DE)(Track 1 of 2)[!].iso / Tools / GFX-Viewer / Animviewer / mpegvideo_datatype / classbase.h < prev    next >
C/C++ Source or Header  |  1999-03-29  |  7KB  |  214 lines

  1.  
  2. #ifndef CLASSBASE_H
  3. #define CLASSBASE_H 1
  4.  
  5. /*
  6. **
  7. **  $VER: classbase.h 1.11 (7.11.97)
  8. **  mpegvideo.datatype 1.11
  9. **
  10. **  Header file for DataTypes class
  11. **
  12. **  Written 1996/1997 by Roland 'Gizzy' Mainz
  13. **  Original example source from David N. Junod
  14. **
  15. */
  16.  
  17. /* amiga includes */
  18. #include <exec/types.h>
  19. #include <exec/ports.h>
  20. #include <exec/memory.h>
  21. #include <exec/lists.h>
  22. #include <exec/semaphores.h>
  23. #include <exec/execbase.h>
  24. #include <dos/dos.h>
  25. #include <dos/dosextens.h>
  26. #include <dos/rdargs.h>
  27. #include <dos/dostags.h>
  28. #include <dos/var.h>
  29. #include <graphics/gfx.h>
  30. #include <graphics/text.h>
  31. #include <graphics/scale.h>
  32. #include <graphics/gfxbase.h>
  33. #include <cybergraphics/cybergraphics.h>
  34. #include <intuition/classes.h>  /* must be $Id: classes.h,v 40.0 94/02/15 17:46:35 davidj Exp Locker: davidj $ */
  35. #include <intuition/classusr.h>
  36. #include <intuition/cghooks.h>
  37. #include <intuition/icclass.h>
  38. #include <intuition/gadgetclass.h>
  39. #include <datatypes/datatypes.h>
  40. #include <datatypes/datatypesclass.h>
  41. #include <datatypes/animationclass.h>
  42. #include <datatypes/animationclassext.h> /* animation.datatype V41 */
  43.  
  44. /* amiga prototypes */
  45. #include <clib/macros.h>
  46. #include <clib/exec_protos.h>
  47. #include <clib/utility_protos.h>
  48. #include <clib/dos_protos.h>
  49. #include <clib/graphics_protos.h>
  50. #include <clib/cybergraphics_protos.h>
  51. #include <clib/intuition_protos.h>
  52. #include <clib/datatypes_protos.h>
  53. #include <clib/dtclass_protos.h>
  54. #ifdef PARAMETERS_STACK
  55. #include <clib/alib_stdio_protos.h>
  56. #endif /* PARAMETERS=STACK */
  57.  
  58. /* amiga pragmas */
  59. #include <pragmas/exec_pragmas.h>
  60. #include <pragmas/utility_pragmas.h>
  61. #include <pragmas/dos_pragmas.h>
  62. #include <pragmas/graphics_pragmas.h>
  63. #include <pragmas/cybergraphics_pragmas.h>
  64. #include <pragmas/intuition_pragmas.h>
  65. #include <pragmas/datatypes_pragmas.h>
  66. #include <pragmas/dtclass_pragmas.h>
  67. #include <pragmas/alib_pragmas.h> /* amiga.lib stubs (tagcall pragmas) */
  68.  
  69. /* ANSI includes */
  70. #include <stdlib.h>
  71. #include <string.h>
  72. #include <setjmp.h>
  73.  
  74. /* VMM support */
  75. #include "vmm.h"
  76.  
  77. /* project includes */
  78. #include "mpegvideo.h"
  79. #include "mpegamiga.h"
  80.  
  81. /*****************************************************************************/
  82.  
  83. #ifndef AFF_68060
  84. #define AFF_68060 (1L<<7)
  85. #endif /* !AFF_68060 */
  86.  
  87. /*****************************************************************************/
  88.  
  89. typedef long          INT32;
  90. typedef unsigned long UINT32;
  91.  
  92. /*****************************************************************************/
  93.  
  94. #define MPEGVIDEODTCLASS "mpegvideo.datatype"
  95.  
  96. /*****************************************************************************/
  97.  
  98. struct ClassBase
  99. {
  100.     struct ClassLibrary     cb_Lib;
  101.     struct ExecBase        *cb_SysBase;
  102.     struct Library         *cb_UtilityBase;
  103.     struct Library         *cb_VMMBase;
  104.     struct Library         *cb_DOSBase;
  105.     struct GfxBase         *cb_GfxBase;
  106.     struct Library         *cb_CyberGfxBase;
  107.     struct Library         *cb_IntuitionBase;
  108.     struct Library         *cb_DataTypesBase;
  109.     struct Library         *cb_SuperClassBase;
  110.     BPTR                    cb_SegList;
  111.     struct SignalSemaphore  cb_Lock;           /* Access lock */
  112. };
  113.  
  114. /*****************************************************************************/
  115.  
  116. /* SASC specific defines */
  117. #define REGARGS __asm
  118. #define ASM __asm
  119. #define DISPATCHERFLAGS __saveds __asm
  120. #define REGD0 register __d0
  121. #define REGD1 register __d1
  122. #define REGD2 register __d2
  123. #define REGD3 register __d3
  124. #define REGD4 register __d4
  125. /* ... */
  126. #define REGA0 register __a0
  127. #define REGA1 register __a1
  128. #define REGA2 register __a2
  129. #define REGA3 register __a3
  130. /* ... */
  131. #define REGA6 register __a6
  132.  
  133. /*****************************************************************************/
  134.  
  135. #define SysBase        (classbase -> cb_SysBase)
  136. #define UtilityBase    (classbase -> cb_UtilityBase)
  137. #define VMMBase        (classbase -> cb_VMMBase)
  138. #define DOSBase        (classbase -> cb_DOSBase)
  139. #define GfxBase        (classbase -> cb_GfxBase)
  140. #define CyberGfxBase   (classbase -> cb_CyberGfxBase)
  141. #define IntuitionBase  (classbase -> cb_IntuitionBase)
  142. #define DataTypesBase  (classbase -> cb_DataTypesBase)
  143.  
  144. /*****************************************************************************/
  145.  
  146. /* integer division, rounded */
  147. #define INTDIVR( x, y ) (((x) + ((y) / 2)) / (y))
  148.  
  149. /* Align memory on 4 byte boundary */
  150. #define ALIGN_LONG( mem ) ((APTR)((((ULONG)(mem)) + 3UL) & ~3UL))
  151.  
  152. /* Align memory on 16 byte boundary */
  153. #define ALIGN_QUADLONG( mem ) ((APTR)((((ULONG)(mem)) + 15UL) & ~15UL))
  154.  
  155. /* Following ptr */
  156. #define MEMORY_FOLLOWING( ptr )     ((void *)((ptr) + 1))
  157.  
  158. /* Memory after n bytes */
  159. #define MEMORY_N_FOLLOWING( ptr, n ) ((void *)(((UBYTE *)ptr) + n ))
  160.  
  161. /* Memory after n bytes, longword aligned (Don't forget the 4 bytes in size for rounding !!) */
  162. #define MEMORY_NAL_FOLLOWING( ptr, n ) (ALIGN_LONG( ((void *)(((UBYTE *)ptr) + n )) ))
  163.  
  164. /* casts */
  165. #define V( x )    ((VOID *)(x))
  166. #define G( o )    ((struct Gadget *)(o))
  167. #define EXTG( o ) ((struct ExtGadget *)(o))
  168.  
  169. /* Exclude tag item */
  170. #define XTAG( expr, tagid ) ((Tag)((expr)?(tagid):(TAG_IGNORE)))
  171.  
  172. /* Get data from pointer only if it is NOT NULL (and cast data to ULONG) */
  173. #define XPTRDATA( x ) ((ULONG)((x)?(*(x)):(0UL)))
  174.  
  175. /* Boolean conversion */
  176. #define MAKEBOOL( x ) ((BOOL)((x) != NULL))
  177.  
  178. /*****************************************************************************/
  179. /* CyberGFX related stuff */
  180.  
  181. /* This one is missing in the CyberGFX includes (thanks to Niels Froehling for this) */
  182. #ifndef BMB_SPECIALFMT
  183. #define BMB_SPECIALFMT (7UL)
  184. #define BMF_SPECIALFMT (1UL << BMB_SPECIALFMT)
  185. #endif /* BMB_SPECIALFMT */
  186.  
  187. #define SHIFT_PIXFMT( fmt ) (((ULONG)(fmt)) << 24UL)
  188.  
  189. #define CYBERGFXNAME     "cybergraphics.library"
  190. #define CYBERGFXVERSION  (40UL)
  191.  
  192. /*****************************************************************************/
  193.  
  194. #ifndef PARAMETERS_STACK
  195. #define PARAMETERS_STACK 1
  196. #define  CLIB_ALIB_PROTOS_H
  197. __stdargs void  NewList( struct List *list );
  198. __stdargs ULONG DoMethodA( Object *obj, Msg message );
  199. __stdargs ULONG DoMethod( Object *obj, unsigned long MethodID, ... );
  200. __stdargs ULONG DoSuperMethodA( struct IClass *cl, Object *obj, Msg message );
  201. __stdargs ULONG DoSuperMethod( struct IClass *cl, Object *obj, unsigned long MethodID, ... );
  202. __stdargs ULONG CoerceMethodA( struct IClass *cl, Object *obj, Msg message );
  203. __stdargs ULONG CoerceMethod( struct IClass *cl, Object *obj, unsigned long MethodID, ... );
  204. __stdargs ULONG SetSuperAttrs( struct IClass *cl, Object *obj, unsigned long Tag1, ... );
  205. #endif /* !PARAMETERS_STACK */
  206.  
  207. /*****************************************************************************/
  208.  
  209. #include "class_iprotos.h"
  210.  
  211. #endif /* !CLASSBASE_H */
  212.  
  213.  
  214.